Additional fixes for mapbar.
authorrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Fri, 1 Mar 2013 16:18:28 +0000 (16:18 +0000)
committerrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Fri, 1 Mar 2013 16:18:28 +0000 (16:18 +0000)
gpsbabel/mapbar_track.cc
gpsbabel/reference/track/mapbar~gpx.gpx

index da21a2489ec949bdd35929703d5c78d3e245ea5b..0831b1a5f8f9df59fd607e68fc91e34111bd0e82 100644 (file)
@@ -97,13 +97,8 @@ mapbar_track_read(void)
   int olen = strlen(name);
   track->rte_name = cet_str_uni_to_utf8((const short int*) name, olen);
 
-  waypoint* start = read_waypoint();
-  track_add_wpt(track, start);
-
-  waypoint* end = read_waypoint();
-
-  // skip one pair waypoint
-  gbfseek(fin, 4*4, SEEK_CUR);
+  // skip two pair waypoint
+  gbfseek(fin, 8*4, SEEK_CUR);
   // skip way length
   gbfseek(fin, 8, SEEK_CUR);
   // skip fixed value
@@ -111,11 +106,15 @@ mapbar_track_read(void)
 
   int end_flag = gbfgetint32(fin);
   for (;;) {
+    if (end_flag) {
+      break;
+    }
+
     int length = gbfgetint32(fin);
     is_fatal((length < 1) || (length > 1600), MYNAME ": get bad buffer length");
 
-    length += 16; // the real length
     is_fatal((length % 8 != 0), MYNAME ": bad buffer size");
+    gbfseek(fin, 16, SEEK_CUR);
 
     const int amount = length/8;
     for (int i = 0; i < amount; ++i) {
@@ -123,13 +122,8 @@ mapbar_track_read(void)
       track_add_wpt(track, tmp);
     }
 
-    if (end_flag) {
-      break;
-    }
     end_flag = gbfgetint32(fin);
   }
-
-  track_add_wpt(track, end);
 }
 
 // capabilities below means: we can only read trackpoints.
index cf39daa119d6c7700cbca363c3b1a344058818b5..9025584e3d2959b28b0ea311c5512952edcb8b1c 100644 (file)
     <name>山顶到豆腐花</name>
     <trkseg>
       <trkpt lat="23.175110000" lon="113.295130000">
-</trkpt>
-      <trkpt lat="23.170610000" lon="113.295130000">
-</trkpt>
-      <trkpt lat="23.175130000" lon="113.297530000">
-</trkpt>
-      <trkpt lat="23.175110000" lon="113.295130000">
 </trkpt>
       <trkpt lat="23.175130000" lon="113.295240000">
 </trkpt>
       <trkpt lat="23.170610000" lon="113.297100000">
 </trkpt>
       <trkpt lat="23.170640000" lon="113.296990000">
-</trkpt>
-      <trkpt lat="23.170640000" lon="113.295130000">
-</trkpt>
-      <trkpt lat="23.175110000" lon="113.296990000">
-</trkpt>
-      <trkpt lat="23.175110000" lon="113.295130000">
-</trkpt>
-      <trkpt lat="23.170640000" lon="113.296990000">
-</trkpt>
-      <trkpt lat="23.170640000" lon="113.296990000">
 </trkpt>
     </trkseg>
 </trk>